[Home] Python으로 돌아가기

멤버 변수, 클래스 변수, 객체 변수

📖 목차


1. 멤버 변수란

멤버 변수는 클래스 내부에 정의된 변수를 통칭하는 용어이며, 일반적으로 클래스 변수와 인스턴스(객체) 변수를 모두 포함하는 상위 개념이다. 클래스 정의의 일부분으로, 클래스가 생성하는 모든 객체에 영향을 주거나, 각 객체가 개별적으로 소유할 수 있는 속성이다.

2. 클래스 변수

클래스 변수는 클래스 자체에 속하며, 해당 클래스로부터 생성된 모든 인스턴스가 공유하는 변수이다. 클래스 정의 내부에서 메서드 바깥에 선언되며, 일반적으로 클래스 전체에서 공통된 데이터를 저장하는 데 사용된다.


class Car:
    wheels = 4  # 클래스 변수

    def __init__(self, color):
        self.color = color  # 객체 변수

3. 객체 변수

객체 변수(또는 인스턴스 변수)는 클래스의 각 인스턴스가 개별적으로 소유하는 변수이다. 생성자 메서드 `__init__` 내부 등에서 `self` 키워드를 통해 정의되며, 객체마다 서로 다른 값을 가질 수 있다.


car1 = Car("red")
car2 = Car("blue")

print(car1.color)  # red
print(car2.color)  # blue

4. 비교표

구분 클래스 변수 객체 변수 (인스턴스 변수)
정의 위치 클래스 정의 내부, 메서드 외부 클래스 내부 메서드 안, self를 통해 정의
소속 클래스 각 인스턴스
공유 여부 모든 인스턴스가 공유 인스턴스마다 별도로 존재
접근 방법 클래스명.변수 또는 self.변수 self.변수
예시 wheels = 4 self.color = "red"

5. 예제 코드


class Dog:
    species = "Canine"  # 클래스 변수

    def __init__(self, name):
        self.name = name  # 객체 변수

dog1 = Dog("Buddy")
dog2 = Dog("Charlie")

print(dog1.species)  # Canine
print(dog2.species)  # Canine

Dog.species = "Wolf"  # 클래스 변수 변경

print(dog1.species)  # Wolf
print(dog2.species)  # Wolf

print(dog1.name)     # Buddy
print(dog2.name)     # Charlie